package com.zenithmind.common.annotation;

import java.lang.annotation.*;

/**
 * 数据缓存失效注解
 * 用于在更新或删除数据时清除缓存
 * 使用方式：在需要清除缓存的方法上添加@DataCacheEvict注解
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DataCacheEvict {

    /**
     * 缓存键前缀
     * 默认使用类名+方法名
     */
    String prefix() default "";

    /**
     * 缓存键，支持SpEL表达式
     * 例如：#user.id 表示取参数中user对象的id属性值
     * 如果不指定，默认使用方法所有参数值的组合
     */
    String key() default "";

    /**
     * 是否在方法执行前清除缓存
     * 默认false，即在方法执行后清除缓存
     */
    boolean beforeInvocation() default false;

    /**
     * 是否清除所有缓存（以prefix为前缀的所有缓存）
     * 默认false，只清除指定key的缓存
     */
    boolean allEntries() default false;
} 